package servico;

import dao.SolicitacaoDAO;
import dao.fabrica.FabricaDeDAOs;
import excecao.AplicacaoException;
import excecao.ObjetoDuplicadoException;
import excecao.ObjetoNaoEncontradoException;
import java.util.List;
import modelo.*;

public class SolicitacaoAppService {

    private static SolicitacaoDAO SolicitacaoDAO = FabricaDeDAOs.getDAO(SolicitacaoDAO.class);
    

    public void inclui(Solicitacao umaSolicitacao) throws AplicacaoException {
        try {
            SolicitacaoDAO.inclui(umaSolicitacao);

        } catch (ObjetoDuplicadoException e) {
            throw new AplicacaoException("Solicitação já cadastrada");
        }

    }

    public void altera(Solicitacao umaSolicitacao)
            throws AplicacaoException {
        try {

            SolicitacaoDAO.altera(umaSolicitacao);

        } catch (ObjetoNaoEncontradoException e) {

            throw new AplicacaoException("Solicitação não encontrada");
        }
    }

    public void exclui(Solicitacao umaSolicitacao)
            throws AplicacaoException {
        try {

            SolicitacaoDAO.exclui(umaSolicitacao);

        } catch (ObjetoNaoEncontradoException e) {

            throw new AplicacaoException("Solicitação não encontrada");
        }
    }

    public Solicitacao recuperaUmaSolicitacao(long idSolicitacao)
            throws AplicacaoException {
        try {

            Solicitacao solicitacao = SolicitacaoDAO.recuperaUmaSolicitacao(idSolicitacao);

            return solicitacao;
        } catch (ObjetoNaoEncontradoException e) {

            throw new AplicacaoException("Solicitação não encontrado");
        }
    }

    public List<Solicitacao> recuperaSolicitacoes() {
        List<Solicitacao> solicitacao = null;

        solicitacao = SolicitacaoDAO.recuperaSolicitacoes();

        return solicitacao;
    }
    
    public void criaSolicitacao(Medicamento medicamento, Integer quantidade, Medico medico) throws AplicacaoException {
        Solicitacao umaSolicitacao = null;
        umaSolicitacao.setMedicamento(medicamento);
        umaSolicitacao.setMedico(medico);
        umaSolicitacao.setQuantidade(quantidade);
        inclui(umaSolicitacao);
        
    }
    
}